package com.sunyur.tailor.channel.service.inner.order.model;

import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.List;

/**
 * @ClassName GetListOrderByCodesModel
 * @Description 批量获取订单头信息返回实体
 * @Author hao.tian
 * @Date 2021/5/11
 * @Version v1.0
 */
@Data
public class GetListOrderByCodesModel implements Serializable {

    private static final long serialVersionUID = -4258776145758767917L;
    /**
     * 订单号
     */
    private String orderCode;

    /**
     * 外部订单号
     */
    private String orderPurCode;

    /**
     * 订单类型(OLD_PRODUCT:调旧订单 STANDARD:标准订单 MANUAL:手工订单 SERVICE:服务订单)
     */
    private String orderType;

    /**
     * 协议Code
     */
    private String protocolCode;

    /**
     * 发票类型(0:增值税普通发票 1:增值税专用发票)
     */
    private Integer invoiceType;

    /**
     * 合同编号（基于合同创建的是和合同编号，基于协议创建的是协议编号）
     */
    private String contractCode;

    /**
     * 结算主体编号
     */
    private String settleCompanyCode;

    /**
     * 结算主体-公司名称
     */
    private String settleCompanyName;

    /**
     * 采购员编码
     */
    private String agentCode;

    /**
     * 采购员名称
     */
    private String agentName;

    /**
     * 采购员采购组内部编码
     */
    private String agentGroupCode;

    /**
     * 采购员采购组外部编码
     */
    private String agentGroupPurCode;

    /**
     * 采购员采购组名称
     */
    private String agentGroupName;

    /**
     * 是否是电商订单标识(0:非电商1:电商)
     */
    private Integer ecommerceFlag;

    /**
     * 采购员电话
     */
    private String agentMobile;

    /**
     * 供应商编码
     */
    private String supplierCode;

    /**
     * 供应商名称
     */
    private String supplierName;

    /**
     * 供应商联系人Code
     */
    private String supplierContactCode;

    /**
     * 供应商联系人
     */
    private String supplierContactName;

    /**
     * 供应商联系人电话
     */
    private String supplierContactMobile;

    /**
     * 备注
     */
    private String remark;

    /**
     * 系统收货人编号
     */
    private String receiverCode;

    /**
     * 系统收货人姓名
     */
    private String receiverName;

    /**
     * 收货地址（包含收货人，电话，地址）
     */

    private GetOrderHeadModel.ReceiveAddress receiveAddress;

    @Data
    public static class ReceiveAddress implements Serializable{


        private static final long serialVersionUID = -1521271601449939392L;
        /**
         * 收货省编码（一级地址编码）
         */
        private String provinceCode;

        /**
         * 收货省（一级地址名称）
         */
        private String provinceName;

        /**
         * 收货市编码（二级地址编码 ）
         */
        private String cityCode;

        /**
         * 收货市（二级地址名称）
         */
        private String cityName;

        /**
         * 收货区/县编码（三级地址编码）
         */
        private String countyCode;

        /**
         * 收货区/县（三级地址名称）
         */
        private String countyName;

        /**
         * 收货街道编码（四级地址编码）
         */
        private String townCode;

        /**
         * 收货街道（四级地址名称）
         */
        private String townName;

        /**
         * 详细地址
         */
        private String address;

        /**
         * 采购员名称
         */
        private String name;

        /**
         * 手机号
         */
        private String mobile;
    }

    /**
     * 创建时间
     */
    private Long createTime;

    /**
     * 系统收票人编号（外部）
     */
    private String invoiceReceiverCode;

    /**
     * 系统收票人姓名
     */
    private String invoiceReceiverName;

    /**
     * 收票地址
     */
    private GetOrderHeadModel.InvoiceReceiveAddress invoiceReceiveAddress;

    @Data
    public static class InvoiceReceiveAddress implements Serializable{


        private static final long serialVersionUID = -3418123458908432452L;
        /**
         * 收货省编码（一级地址编码）
         */
        private String provinceCode;

        /**
         * 收货省（一级地址名称）
         */
        private String provinceName;

        /**
         * 收货市编码（二级地址编码）
         */
        private String cityCode;

        /**
         * 收货市（二级地址名称）
         */
        private String cityName;

        /**
         * 收货区/县编码（三级地址编码）
         */
        private String countyCode;

        /**
         * 收货区/县（三级地址名称）
         */
        private String countyName;

        /**
         * 收货街道编码（四级地址编码）
         */
        private String townCode;

        /**
         * 收货街道（四级地址名称）
         */
        private String townName;

        /**
         * 详细地址
         */
        private String address;

        /**
         * 姓名
         */
        private String name;

        /**
         * 手机号
         */
        private String mobile;
    }

    /**
     * 采购组织Code
     */
    private String purchaseGroupCode;

    /**
     * 采购组织
     */
    private String purchaseGroupName;

    /**
     * 创建人Code（外部编号）
     */
    private String creatorCode;

    /**
     * 创建人（自动生成的订单，供应商创建订单没有创建人）
     */
    private String creatorName;

    /**
     * 运费的物料编号（运费专用物料编码）外部
     */
    private String freightMaterielCode;

    /**
     * 运费金额
     */
    private BigDecimal freightPrice;

    /**
     * 运费税率
     */
    private BigDecimal freightRate;

    /**
     * 含税总额(元)
     */
    private BigDecimal taxIncludedAmount;

    /**
     * 不含税总额
     */
    private BigDecimal taxExcludedAmount;

    /**
     * 总金额（含税）
     */
    private BigDecimal totalAmount;

    /**
     * 附件集合
     */
    private List<GetOrderHeadModel.Access> accessories;
    @Data
    public static class Access implements Serializable{


        private static final long serialVersionUID = -6233529993751799870L;
        /**
         * 附件唯一标识
         */
        private String key;

        /**
         * 附件名称
         */
        private String name;
    }

}
